home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / scsh-0.4 / scsh-0 / scsh-0.4.2 / scsh / endian.scm.in < prev    next >
Text File  |  1995-10-31  |  1KB  |  40 lines

  1. ;;; Endian routines for the Scheme Shell
  2. ;;; Copyright (c) 1995 by Brian D. Carlstrom.
  3.  
  4. ;; Big Endian - Motorola, Sparc, HPPA, etc
  5. (define (net-to-host-32-big num32)
  6.   (and (<= 0 num32 #xffffffff)
  7.        num32))
  8.  
  9. (define (net-to-host-16-big num16)
  10.   (and (<= 0 num16 #xffffffff)
  11.        num16))
  12.  
  13. ;; Little Endian - Intel, Vax, Alpha
  14. (define (net-to-host-32-little num32)
  15.   (and (<= 0 num32 #xffffffff)
  16.        (let* ((num24 (arithmetic-shift num32 -8))
  17.           (num16 (arithmetic-shift num24 -8))
  18.           (num08 (arithmetic-shift num16 -8))
  19.           (byte0 (bitwise-and #b11111111 num08))
  20.           (byte1 (bitwise-and #b11111111 num16))
  21.           (byte2 (bitwise-and #b11111111 num24))
  22.           (byte3 (bitwise-and #b11111111 num32)))
  23.      (+ (arithmetic-shift byte3 24)
  24.         (arithmetic-shift byte2 16)    
  25.         (arithmetic-shift byte1  8)
  26.         byte0))))
  27.  
  28. (define (net-to-host-16-little num16)
  29.   (and (<= 0 num16 #xffffffff)
  30.        (let* ((num08 (arithmetic-shift num16 -8))
  31.           (byte0 (bitwise-and #b11111111 num08))
  32.           (byte1 (bitwise-and #b11111111 num16)))
  33.      (+ (arithmetic-shift byte1 8)
  34.         byte0))))
  35.  
  36. (define net-to-host-32 net-to-host-32-@ENDIAN@)
  37. (define net-to-host-16 net-to-host-16-@ENDIAN@)
  38. (define host-to-net-32 net-to-host-32-@ENDIAN@)
  39. (define host-to-net-16 net-to-host-16-@ENDIAN@)
  40.